---
title: "Mission: Iconic Reefs and National Coral Reef Monitoring Program Benthic Analysis"
subtitle: "Summary Report for 2022 and 2024"
bibliography: References.bib
reference-location: section
reference-section-title: Bibliography
reference-section-spacing: 20em
nocite: "@NOAA2022a; @NOAA2022b; @NOAA2024a; @NOAA2024b"
csl: special.csl
link-citations: true
format:
html:
theme: lumen
toc: true
number-sections: true
code-fold: true
code-tools: true
fig-cap-location: bottom
fig-align: center
self-contained: true
title-block-banner: true
title-block-style: default
include-before-body: logos.html
include-in-header:
text: |
<style>
.csl-entry {
margin-bottom: .7em;
}
</style>
pdf:
fig-cap-location: bottom
author: "Nicole Krampitz, Julia Mateski, and Dione Swanson"
toc: true
toc-title: |
\clearpage
Table of Contents
fig-numbering: false
number-sections: true
table-caption: false
include-in-header:
text: |
\usepackage{graphicx}
\usepackage{titling}
\pretitle{%
\begin{center}
\includegraphics[width=6cm]{mir_logo.png}\\[1em]
\includegraphics[width=4cm]{noaa_crcp.jpg}\\[1em]
\LARGE
}
\usepackage{caption}
\captionsetup[figure]{labelformat=empty}
\captionsetup[table]{labelformat=empty}
execute:
freeze: auto
echo: true
warning: false
message: false
---
\newpage
## Introduction
[Mission: Iconic Reefs](https://www.fisheries.noaa.gov/southeast/habitat-conservation/restoring-seven-iconic-reefs-mission-recover-coral-reefs-florida-keys) (M:IR) is a multi-institutional initiative designed to restore ecological function and biodiversity across key reef sites in the Florida Keys. Led by NOAA in collaboration with federal, state, institutional, and non-profit partners, M:IR targets nearly three million square feet of reef at seven key coral reefs in the Florida Keys National Marine Sanctuary (FKNMS): Carysfort (North and South), Cheeca Rocks, Eastern Dry Rocks, Horseshoe Reef, Looe Key, Newfound Harbor, and Sombrero Reef (Figure 1). Across these reefs, M:IR aims to restore coral cover to an average of 25% across the seven sitesal-- an inititaitve unparalleled in scope and scale that will require hundreds of thousands of coral restoration outplants and over a decade of phased intervention. {fig-align="center"}
These Iconic reefs were selected for restoration due to their diversity in reef types, levels of anthropogenic disturbances, initial coral cover, geographic distribution, and cultural significance. Restoration progress at these reefs is informed by ongoing monitoring of coral reef benthic communities and coral populations at M:IR sites using a range of metrics, such as coral cover, size structure, mortality prevalence, and diversity. Such multi-metric monitoring is essential to evaluating whether current restoration practices are effective in establishing and maintaining a healthy coral reef, as restoration 'success' encompasses a range of ecological and management metrics rather than a single measurement (e.g., coral cover) [@Goergen2020].
In addition to monitoring within the M:IR reefs, it is also important to assess the surrounding reefs in the Florida Keys to interpret restoration progress. The National Coral Reef Monitoring Program (NCRMP), which conducts standardized reef assessments across the Florida Keys on a biennial basis, provides a solid framework for comparison. To align with this program, the M:IR team applied NCRMP survey methodology within its Iconic Sites in 2022 and 2024 to complement NCRMP surveys. These surveys focused on shallow (\<30 m), hard-bottom reef habitats, using a stratified-random, one-stage design within 50 m × 50 m grid cells to ensure representative sampling across depth and rugosity strata [@Ault2021]. The survey design ensures that survey sites are allocated by cross-shelf zone, rugosity type, and depth strata, with sites distributed around the Florida Keys from nearshore to offshore to a maximum depth of 30 m. The NCRMP sample grid was spatially joined with the seven distinct M:IR zones (Figure 1). Survey sites were proportionally allocated within NCRMP strata to maintain consistent representation across habitats. \
```{r libraries, include = FALSE}
# LIBRARIES
library(ggplot2)
library(dplyr)
library(tidyr)
library(cowplot)
library(grid)
library(patchwork)
library(ggthemes)
library(extrafont)
library(grid)
library(ggthemes)
library(ggpattern)
library(extrafont)
library(plotly)
library(tidyverse)
library(ncrmp.benthics.analysis)
library(ggplot2)
library(cowplot)
library(gridExtra)
library(egg)
library(mgcv)
# source("R Scripts/total_dis_code.R")
source("../Project/R Scripts/MIR_make_size_bins.R")
source("../Project/R Scripts/theme_publication.R")
source("../Project/R Scripts/QuadPanel.R")
# source("R Scripts/bleaching_estimates.R")
# source("R Scripts/total_bleach_code.R")
source("../Project/R Scripts/dis_ble_prev_ratio_est.R")
```
```{r MIR species, echo = FALSE}
MIR_species <- c( "ACR CERV", "ACR PALM", "COL NATA", "DEN CYLI",
"DIC STOK", "DIP LABY", "EUS_ AST", "MEA MEAN",
"PSE CLIV", "PSE STRI", "MON CAVE" )
```
Corals and benthic communities were monitored using two different NCRMP surveys: the Benthic Community Assessment survey and the Coral Demographics survey (NOAA CRCP 2022a, 2022b, 2024a, 2024b). The Benthic Community Assessment survey includes: 1) benthic cover (%) estimates along a 15-m transect with a line point intercept method, 2) presence/absence of Endangered Species Act (ESA)-listed coral species (NOAA National Marine Fisheries Service, 2014), 3) abundance of key macroinvertebrates, and 4) reef rugosity measurements within a 15 m x 2 m belt-transect area (NOAA CRCP 2022a, 2024b). At the same site, coral demographics were surveyed within a 10 m x 1 m belt-transect area (NOAA CRCP 2022b, 2024b). NCRMP coral demographic survey data were combined with complementarily allocated survey data from Florida Fish and Wildlife Conservation Commission's Disturbance Response Monitoring ([DRM](https://coraldrm.org/)). In all coral demographics surveys, all live coral colonies ≧ 4 cm were counted, identified to species, measured to the nearest centimeter, and estimates were made of the proportion per colony of any present mortality (recent or old), disease (absent, present: slow, fast), and/or bleaching (none, total, partial, paling). Only live coral colonies were included in the survey; dead colonies with 100% mortality were not surveyed (e.g., colonies killed by coral disease). Juvenile corals (\< 4 cm) were reported for species richness only and were not included in counts, size measurements, or estimates of condition (NOAA CRCP 2022b); in 2024, juveniles of select coral species were counted (NOAA CRCP 2024b). In 2024, NCRMP benthic surveys also included large area imaging (LAI) collected at most survey sites: analyses of these LAI data are in progress and not presented here.
To allow direct comparisons of benthic communities inside the restoration areas with the Florida Keys reefs, the NCRMP dataset was restricted to strata types overlapping M:IR sites and depths less than 12 meters. A majority of the reef habitats within the seven M:IR areas ranged from 0-12 meters depth. Statistical comparisons were conducted between M:IR and NCRMP estimates for each survey year and between years for M:IR and NCRMP. This report focuses on coral populations and benthic community metrics; a separate report can be found for fish population assessments (Blondeau et al., 2025).
## Benthic Cover Sites
In 2022, a total of 584 surveys occurred (Table 1) across 403 sites (Florida Tech Memo 2022). In 2024, 771 surveys occured across 542 sites [@GroveInPrep]
### Benthic Composition
```{r Benthic Survey Summaries, results='asis', echo=FALSE}
if (knitr::is_html_output()) {
TableCaption <- "<div style='font-size:0.9em; color: #666666; margin-bottom:0.5em; text-align: center;'>
Table 1. Number of demographic (Demo) and benthic community assessment (BCA) surveys completed by M:IR, NCRMP, and DRM in 2022 and 2024. </div>"
cat(TableCaption)
#pulling the whole table from a different script because it's messy due to the format
source("../Project/R Scripts/html_summary_table.R")
} else if (knitr::is_latex_output()) {
#for pdf, using a photo of the table from excel instead because format is very messy
cat("\\begin{center}\n")
#changing the table caption to be more similar to html, with light coloring and cnetering
cat("\\textcolor{darkgray}{\\textbf{Table 1.} Number of demographic (Demo) and benthic community assessment (BCA) surveys completed by M:IR, NCRMP, and DRM in 2022 and 2024.}\n\n")
#this is the photo of the table
cat("\\includegraphics[width=\\linewidth]{../Project/images/Proper_Table.png}\n")
#this centers the photo
cat("\\end{center}\n")
}
```
```{r prepare data for benthic cover table, include = FALSE}
##Let's just start with MIR/NCRMP only (benthic cover)
NCRMP_MIR <- read_csv("../Project/data/NCRMP_MIR_cora_2022_24_psu_grps.csv") %>%
group_by(YEAR, strat_cora, analysis_group) %>%
summarise(count = n()) %>%
filter(analysis_group != "NCRMP_NA") %>%
rename(STRAT = strat_cora,
PROT = analysis_group) %>%
mutate(description = case_when(
STRAT == "CFK01" ~ "Inshore reef, all relief types and depths",
STRAT == "CFK02" ~ "Mid-channel patch reef, all relief types and depths",
STRAT == "CFK03" ~ "Offshore patch reef, all relief types and depths",
STRAT == "CFK04" ~ "Forereef, low relief, shallow (0-6 m)",
STRAT == "CFK05" ~ "Forereef, high relief, shallow (0-6 m)",
STRAT == "CFK06" ~ "Forereef, low relief, mid-shallow (6-12 m)",
STRAT == "CFK07" ~ "Forereef, high relief, mid-shallow (6-12 m)"))
table <- NCRMP_MIR %>%
pivot_wider(id_cols = STRAT:description, names_from = YEAR, values_from = count) %>%
mutate(`Study area` = case_when(
PROT == "MIR_GRP"~ "Inside (M:IR)",
PROT == "NCRMP_GRP" ~ "Outside (NCRMP)"
)) %>%
select(`Study area`, STRAT, description, `2022`, `2024`) %>%
arrange(`Study area`, STRAT)
# #conditional statement for rendering in both HTML and PDF
# if (knitr::is_html_output()) {
# DT::datatable(table,
# class = "cell-border stripe",
# rownames = FALSE,
# colnames = c("Study Area", "Strata Name", "Strata Description", "2022 Sample Number", "2024 Sample Number"),
# caption = "Table 1. Number of Benthic Commnity Assesement (BCA) sites sampled inside and outside M:IR areas in each stratum.",
# options = list(
# columnDefs = list(list(className = 'dt-center', targets = "_all")),
# info = FALSE,
# paging = FALSE,
# searching = FALSE
# )
# )}
name <- c("Study Area", "Strata Name", "Strat Description", "2022 Sample Number", "2024 Sample Number")
#
# invisible(table)
```
```{r create benthic cover table, echo = FALSE, results = 'asis'}
table <- table %>% ungroup() %>%
mutate(across(everything(), ~ ifelse(is.na(.), "--", .)))
if (knitr::is_html_output()) {
####### HTML VERSION ##############
sjPlot::tab_df(
table,
title = "<div style='text-align:center'>Table 2. Number of Benthic Commnity Assesement (BCA) sites sampled inside and outside M:IR areas in each stratum.</div>",
escape = FALSE,
show.footnote = TRUE,
alternate.rows = TRUE,
col.header = name,
CSS = list(
css.caption = "font-weight: normal;",
css.tdata = c(rep("", ncol(table) - 2), "text-align: center;", "text-align: center;")
)
)
######### PDF VERSION ###########
} else if (knitr::is_latex_output()) {
# Manually print a styled caption with label BEFORE the table
cat("\\textcolor{darkgray}{\\textbf{Table 2.} Number of Benthic Community Assessment (BCA) sites sampled inside and outside M:IR areas in each stratum.}\n")
# Print the table itself in kableExtra
kableExtra::kbl(
table,
booktabs = TRUE,
caption = NULL, # no caption here
align = c("l", "l", "l", "c", "c"),
col.names = c("Study Area", "Strat", "Strat Description", "2022", "2024")
) %>%
kableExtra::kable_styling(
latex_options = c("striped", "hold_position"),
font_size = 10,
position = "center"
) %>%
kableExtra::row_spec(0, bold = TRUE, align = "c") %>%
print()
}
```
### Coral Demography
```{r create coral demo table data, include = FALSE}
###Demographics (including DRM)
DRM <- read_csv("../Project/data/DRM_cora_2022_24_psu_grps.csv") %>%
group_by(YEAR, strat_cora, analysis_group) %>%
summarise(count = n()) %>%
filter(analysis_group != "NCRMP_NA") %>%
rename(STRAT = strat_cora,
PROT = analysis_group) %>%
mutate(description = case_when(
STRAT == "CFK01" ~ "Inshore reef, all relief types and depths",
STRAT == "CFK02" ~ "Mid-channel patch reef, all relief types and depths",
STRAT == "CFK03" ~ "Offshore patch reef, all relief types and depths",
STRAT == "CFK04" ~ "Forereef, low relief, shallow (0-6 m)",
STRAT == "CFK05" ~ "Forereef, high relief, shallow (0-6 m)",
STRAT == "CFK06" ~ "Forereef, low relief, mid-shallow (6-12 m)",
STRAT == "CFK07" ~ "Forereef, high relief, mid-shallow (6-12 m)")) %>%
rbind(., NCRMP_MIR) %>%
group_by(STRAT, PROT, YEAR, description) %>%
summarise(count = sum(count)) %>%
ungroup()
table_2 <- DRM %>%
pivot_wider(id_cols = STRAT:description, names_from = YEAR, values_from = count) %>%
mutate(`Study area` = case_when(
PROT == "MIR_GRP"~ "Inside (M:IR)",
PROT == "NCRMP_GRP" ~ "Outside <br> (NCRMP + DRM)"
)) %>%
select(`Study area`, STRAT, description, `2022`, `2024`) %>%
arrange(`Study area`, STRAT)
#
# if (knitr::is_html_output()) {
# DT::datatable(table_2,
# class = "cell-border stripe",
# rownames = FALSE,
# colnames = c("Study Area", "Strata Name", "Strata Description", "2022 Sample Number", "2024 Sample Number"),
# caption = "Table 3. The number of coral demographic sites sampled inside and outside M:IR areas in each stratum (includes DRM data).",
# options = list(
# columnDefs = list(list(className = 'dt-center', targets = "_all")),
# info = FALSE,
# paging = FALSE,
# searching = FALSE
# )
# )}
#
# invisible(table2)
```
```{r print coral demo table, results = 'asis', echo = FALSE}
table_2 <- table_2 %>% ungroup() %>%
mutate(across(everything(), ~ ifelse(is.na(.), "--", .)))
####### HTML VERSION ##############
if (knitr::is_html_output()) {
sjPlot::tab_df(
table_2,
title = "<div style='text-align:center'> Table 3. The number of coral demographic sites sampled inside and outside M:IR areas in each stratum (includes DRM data).</div>",
escape = FALSE,
show.footnote = TRUE,
alternate.rows = TRUE,
col.header = name,
CSS = list(
css.firsttablecol = "width: 140px;", # widen first column
css.caption = "font-weight: normal;",
css.tdata = c(rep("", ncol(table) - 2), "text-align: center;", "text-align: center;"))
)
######### PDF VERSION ###########
} else if (knitr::is_latex_output()) {
table_2 <- table_2 %>% mutate(`Study area` = case_when(
`Study area` == "Outside <br> (NCRMP + DRM)" ~ "Outside (NCRMP + DRM)",
TRUE ~ `Study area`##PDF doesn't accept break
))
# Styled caption printed manually before the table
cat("\\textcolor{darkgray}{\\textbf{Table 3.} The number of coral demographic sites sampled inside and outside M:IR areas in each stratum (includes DRM data).}\n")
# Print the table with kableExtra
kableExtra::kbl(
table_2,
booktabs = TRUE,
caption = NULL,
col.names = c("Study Area", "Strata", "Strata Description", "2022", "2024")
) %>%
kableExtra::kable_styling(
latex_options = c("striped", "hold_position"),
font_size = 10,
position = "center"
) %>%
kableExtra::row_spec(0, bold = TRUE, align = "c") %>%
print()
}
```
```{r fig 1: benthic cover data, fig.width=12, fig.asp=0.6, echo = FALSE}
#get cover categories
cat_codes <- read_csv("../Project/data/bcov_cat_codes.csv") %>%
dplyr::rename(cover_group = CODE)
#load and clean cover data (MIR and NCRMP, no DRM)
cvr <- read_csv("../Project/data/fk2022_24_NCRMP_MIR_bcov_catcd_dom_NK.csv")%>%
dplyr::rename(
cover_group = COVER_CAT_CD,
REGION = analysis_group,
avCvr = wavp,
SE = se_wp,
n_sites = n
) %>%
left_join(cat_codes)
```
```{r fig_benthic_cover_data (OG), echo = FALSE}
#wanted_cover_cats <- c("HCORA" , "MACAL")
#Formatting Data for Combined Macroalgal/Hard Coral plot
cvr_analysis <- cvr %>%
group_by(REGION, COV_CAT_A, YEAR) %>%
# filter(COV_CAT_A %in% wanted_cover_cats) %>%
summarise(
avCvr = sum(avCvr),
SE = sqrt(sum(SE^2))#,
# LCI_1.96 = avCvr - 1.96 * SE,
# UCI_1.96 = avCvr + 1.96 * SE,
# LCI = avCvr - SE,
# UCI = avCvr + SE
)
#change names --> more readable
new_dat <- cvr_analysis %>%
mutate(COV_CAT_A = recode(COV_CAT_A,
"HCORA" = "Hard Coral",
"MACAL" = "Macroalgae",
"RAMIC" = "Ramicrusta",
"TURFA" = "Turf Algae",
"SPONG" = "Sponge",
"SCORA" = "Octocoral",
"CCALG" = "Crustose Coralline Algae (CCA)",
"OTHER" = "Other"
))
##Other includes Cyanobacteria, Bare, Palythoa, Other organisms, Millepora, Seagrass
## read in significance
sig <- read_csv("../Project/data/significance.csv")
dodge_width <- 0.06
# Get unique categories
categories <- unique(new_dat$COV_CAT_A)
# Define the plot for multi-function use in tabset
make_plot <- function(df, category) {
df_filtered <- df %>% filter(COV_CAT_A == category)
plot <- df_filtered %>%
ggplot(aes(x = as.integer(YEAR), y = avCvr *100, group = interaction(COV_CAT_A, REGION), color = REGION)) +
geom_point(size = 2, position = position_dodge(width = 0.06)) +
geom_line(size = 1, position = position_dodge(width = 0.06)) +
geom_errorbar(aes(ymin = pmax(0, avCvr * 100 - SE * 100), ymax = avCvr * 100 + SE * 100),
width = 0.1,
position = position_dodge(width = 0.06)) +
scale_color_manual(
values = c("MIR_GRP" = "#0072B2", "NCRMP_GRP" = "#D55E00"),
labels = c("M:IR", "NCRMP"),
name = ""
) +
labs(x = "Year", y = "Cover (%)", title = category ) +
# facet_wrap(~ COV_CAT_A) + ##This was when we filtered for just hard corals/macroalgae. If we output as a pdf, might be necessary to bring back
scale_x_continuous(breaks = c(2022, 2024)) +
coord_cartesian(ylim = c(-1, NA)) +
#scale_y_continuous(, labels = scales::percent_format(accuracy = 2) ) +
theme_Publication(base_size = 20) +
theme(
strip.text = element_text(face = "bold", size = 16),
legend.position = "bottom",
legend.direction = "horizontal",
legend.key.size = unit(1.2, "cm"),
legend.margin = margin(0, 0, 0, 0, "cm"),
legend.text = element_text(size = 16),
legend.background = element_blank(),
legend.title = element_blank()
) + guides(color = guide_legend(override.aes = list(size = 4)))
##conditional formatting for ramicrusta so it doesn't come up as negative
if (category == "Ramicrusta"){
plot <- plot + coord_cartesian(ylim = c(-0, 4))
}
##Adding the significance labels
#This may take a fair amount of tweaking ##
sig_cover <- sig %>%
filter(metric == "cover") %>%
filter(variable == category)
# For between years find a midpoint to go on the plot
midpoints <- df_filtered %>%
group_by(REGION) %>%
summarise(
y_mid = 1.02 * mean(avCvr * 100, na.rm = TRUE))
# For between groups find the y min to go on the plot
ymin <- df_filtered %>%
group_by(COV_CAT_A) %>%
summarise(y_min = 85 * (min(avCvr)- max(SE))) %>%# this hopefully gets a nice plot minimum just below wherever it ends
dplyr::rename(variable = COV_CAT_A) #for joining purposes
# Add them to the significance table
sig_cover <- sig_cover %>%
left_join(midpoints, by = "REGION") %>%
left_join(ymin, by = "variable")
##Plot it with annotations
(plot +
### Significance BETWEEN GROUPS on X axis
geom_text(data = sig_cover %>% filter (is.na(REGION)),
aes(x = YEAR, y = -0.5), label = "+",
inherit.aes = FALSE, size = 12, color = "black") +
### Significance BETWEEN YEARS on graph
geom_text(data = sig_cover %>% filter (is.na(YEAR)),
aes(x = 2023, y = y_mid, color = REGION), label = "*",
inherit.aes = FALSE, size = 15))
}
```
```{r COVER HTML LOOP, fig.cap="Figure 2. Cover estimates for main benthic groups inside and outside M:IR areas for 2022 and 2024. A black (+) indicates a significant difference between groups in that survey year (i.e., 2022 or 2024). A colored (*) indicates significance difference between years for the given group (i.e., M:IR or NCRMP). The category ‘Other’ comprises Cyanobacteria, Palythoa, <i>Millepora</i>, Seagrass, bare substrate, and other miscellaneous organisms.", fig.width=9, results='asis', fig.asp=0.8, echo=FALSE}
# Define manual tab order
ordered_categories <- c("Hard Coral", "Macroalgae", "Octocoral", "Sponge", "Turf Algae", "Crustose Coralline Algae (CCA)", "Ramicrusta", "Other")
if (knitr::is_html_output()){
# Loop through categories and print plots
cat("::: {.panel-tabset}\n\n") # open tabset container
walk(ordered_categories, function(cat) {
cat("### ", cat, " {.tab-pane}\n\n", sep = "")
cat_plot <- make_plot(new_dat, cat)
print(cat_plot)
cat("\n\n")
})
cat(":::\n") # close tabset container
}
```
### Focal Species
```{r make data for top species, include = FALSE}
##Everything calculated for density is done so by region/year, so maybe just do total colonies observed?
df <- read.csv( "../Project/data/FK2024_NCRMP_DRM_MIR_corsz_AR_NK.csv") %>%
filter(N > 0,
analysis_group != "NCRMP_NA") %>%
group_by(SPECIES_CD, YEAR) %>%
summarise(observed = n()) %>%
arrange(desc(observed)) %>%
pivot_wider(id_cols = SPECIES_CD, names_from = YEAR, values_from = observed)
##Top 15 species
top <- df %>% ungroup() %>% dplyr::slice(1:15)
##MIR Species
target_species <- c("ACR PALM", "ACR CERV", "COL NATA", "DEN CYLI",
"DIC STOK", "DIP LABY", "EUS_ AST", "MEA MEAN",
"PSE CLIV", "PSE STRI", "MON CAVE")
MIR <- df %>% filter(
SPECIES_CD %in% target_species
)
##Together
table <- full_join(MIR, top)
##Add names from origial DRM data
names <- read_csv("../Project/data/DRM_FLK_2014_2024_2stage_coral_demographics.csv") %>% select(SPECIES_CD, SPECIES_NAME) %>% unique()
final <- left_join(table, names) %>%
select(SPECIES_NAME, SPECIES_CD, `2022`, `2024`) %>%
arrange(desc(`2022`)) %>%
mutate(SPECIES_NAME =
ifelse(
`SPECIES_CD` %in% target_species,
paste0("*", "<i>", SPECIES_NAME, "</i>"),
paste0("<i>", SPECIES_NAME, "</i>")
)) %>%
mutate(across(c(`2022`, `2024`), ~ format(., big.mark = ",", scientific = FALSE))) %>%
ungroup() %>%
select(-SPECIES_CD)
```
```{r create top species table, echo = FALSE, results = 'asis'}
final <- final %>% ungroup() %>%
mutate(across(everything(), ~ ifelse(is.na(.), "--", .)))
######### HTML OUTPUT ###############
if (knitr::is_html_output()) {
sjPlot::tab_df(
final,
title = "<div style='text-align:center'>Table 4. Most Observed Species and Focal M:IR Species Each Year</div>",
alternate.rows = TRUE,
show.footnote = TRUE,
footnote = "* indicates M:IR focal species",
col.header = c(
"<b>Species</b>",
"<b>Colonies in 2022</b>",
"<b>Colonies in 2024</b>"
),
CSS = list(
css.caption = "font-weight: normal;",
css.table = "margin-left: auto; margin-right: auto; width: 90%;",
css.tdata = c(rep("", ncol(table) - 2), "text-align: center;", "text-align: center;")
))
######### PDF OUTPUT ###############
} else if (knitr::is_latex_output()) {
##remove the italics styling for HTML
final <- final %>% mutate(SPECIES_NAME = gsub("</?i>", "", SPECIES_NAME))
# Custom caption printed manually above the table
cat("\\textcolor{darkgray}{\\textbf{Table 4.} Number of colonies observed for focal M:IR species and the most commonly encountered non-focal species in 2022 and 2024.}\\\\\n")
# Render table with kableExtra
kableExtra::kbl(
final,
booktabs = TRUE,
col.names = c("Species", "Colonies in 2022", "Colonies in 2024"),
align = c("l", "c", "c")
) %>%
kableExtra::kable_styling(
latex_options = c("striped", "hold_position"),
font_size = 10,
position = "center"
) %>%
kableExtra::row_spec(0, bold = TRUE, align = "c") %>%
kableExtra::column_spec(1, italic = TRUE) %>%
print()
}
```
## Point of Contact:
**NCRMP Atlantic Benthic Team Lead:** Shay Viehman ([shay.viehman\@noaa.gov](mailto:shay.viehman@noaa.gov))
## References
::: {#refs}
:::
</br> ***Data Sources:***\
National Coral Reef Monitoring Program Florida Benthic ([NCRMP](https://www.ncei.noaa.gov/access/metadata/landing-page/bin/iso?id=gov.noaa.nodc:NCRMP-Benthic-Florida))\
Florida Fish and Wildlife Conservation Commission's Disturbance Response Monitoring ([DRM](https://coraldrm.org/))